<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=733553
-->
<head>
  <title>Test for Bug 733553</title>
  <script type="application/javascript" src="/MochiKit/MochiKit.js"></script>
  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body onload="initializeOnload()">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=733553">Mozilla Bug 733553</a>
<p id="display"></p>
<pre id="test">
<script type="application/javascript">

SimpleTest.waitForExplicitFinish();

var testIndex = -1;
var testParts = [
  [1, "red.png"],
  [40, "animated-gif2.gif"],
  [1, "red.png"],
  [100, "lime100x100.svg"],
  [100, "lime100x100.svg"],
  [40, "animated-gif2.gif"],
  [1, "red.png"],
  // Note a failure of the next 'red.png' may indicate failure of resniffing on
  // this part ('shaver.png'); see bug 907575.
  [177, "shaver.png"],
  [1, "red.png"],
  [80, "damon.jpg"],
  [80, "damon.jpg"],
  [80, "damon.jpg"],
  // An invalid image (from bug 787899) that is further delivered with a
  // "special" bad MIME type that indicates that the necko
  // multipart/x-mixed-replace parser wasn't able to parse it.
  // We use a width of 80 because MultipartImage will just drop rillybad.jpg
  // and re-present damon.jpg.
  [80, "rillybad.jpg"],
  [80, "damon.jpg"],
  // Similarly, we'll drop bad.jpg, so we use damon.jpg's width.
  [80, "bad.jpg"],
  [1, "red.png"],
  // We also drop invalid.jpg, so we use red.png's width.
  [1, "invalid.jpg"],
  [40, "animated-gif2.gif"]
];

// We'll append the part number to this, and tell the informant
const BASE_URL = "bug733553-informant.sjs?";

function initializeOnload() {
  var firstimg = document.createElement('img');
  firstimg.addEventListener("load", imageLoad, false);
  firstimg.addEventListener("error", imageLoad, false);
  firstimg.alt = "";
  firstimg.src = "bug733553.sjs";
  document.getElementById('content').appendChild(firstimg);

  // Really ready for first, but who's counting
  readyForNext();
}

function readyForNext() {
  var loader = document.getElementById("loader");
  loader.src = BASE_URL + ++testIndex;
}

function imageLoad(aEvent) {
  var [width, fileName] = testParts[testIndex];
  is(aEvent.target.width, width,
     "Test " + testIndex + " " + fileName + " width correct");

  // Always call readyForNext here, as it's the closest we have to a cleanup
  readyForNext();
  if (testParts.length == testIndex) {
    var firstimg = document.getElementsByTagName('img')[0];
    firstimg.removeEventListener("load", imageLoad, false);
    firstimg.removeEventListener("error", imageLoad, false);
    SimpleTest.finish();
  }
}

</script>
</pre>
<div id="content"> <!-- style="display: none" -->
<iframe id="loader"></iframe>
</div>
</body>
</html>
